#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "config.h"

#ifndef _TDC_H_
#define _TDC_H_

/* CONSTANTES */
#define DELIMITADOR " \t\n"
#define AUTO_ABRE "/**"
#define AUTO_CIERRA "*/";

/* Definicion de la estructura del TDA
	Campos:	archFuente (FILE*): puntero al archivo de codigo fuente a ser documentado
			archDoc (FILE*)   : puntero al archivo destino donde se almacenara la documentacion
			config (V_Array*) : puntero al array variable que contiene los tags del archivo de configuracion
			tagsDoc (V_Array*): puntero al array variable de tags que seran almacenados en el archivo de documentacion
*/
typedef struct tDocumentoDeCodigo
{
    FILE*   archFuente,
            *archDoc;
    V_Array config,
            tagsDoc;
} TDC;

typedef struct tString
{
    char* value;
} tString;

/*  Crea un TDA DocumentoDeCodigo asociado a un archivo de c�digo fuente C
    para su docmentacion automatica.
    PRE:    Tdc tiene suficiente memoria reservada para una estructura de tipo TDC.
            archPrograma es una ruta de archivo v�lida.
    POST:   Si devuelve 0, tdc abierto.
            Si hubo error al abrir el archivo devuelve -1.
    PARAMS: tdc
            archPrograma - Ruta al archivo a documentar
*/
int TDC_Crear ( TDC* tdc, char* archPrograma );


/*  Genera un archivo con la documentaci�n.
    PRE:    Tdc abierto.
            archDoc es una ruta de archivo v�lida.
    POST:   Si devuelve 0, escribi� la documentaci�n autom�tica en archDoc.
            Si devuelve -1 hubo error.
    PARAMS: tdc - El manipulador del archivo al cual escribir.
            archDoc - Nombre del archivo de documentacion.
*/
int TDC_Documentar ( TDC* tdc, char* archDoc );

/*  Cierra el tdc.
    PRE:    tdc abierto.
    POST:   Si devuelve 0, tdc cerrado. En otro caso devuelve -1.
    PARAMS: tdc - El manipulador del archivo a documentar.
*/
int TDC_Cerrar( TDC* tdc );

int Vaciar (V_Array* vector);

#endif
